package com.atguigu.mobileplayer4;

import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.MotionEvent;


/***
 * SplashActivity 是安卓应用中常见的启动页活动（Activity），通常在应用启动时首先显示。
 * 它的主要作用是在应用核心功能加载完成前，向用户展示品牌形象、加载进度或过渡动画，提升用户体验
 */
public class SplashActivity extends Activity {

    /***
     * Handler 主要具备两大功能：
     * 把消息（Message）或者可运行对象（Runnable）发送到消息队列（MessageQueue）。
     * 从消息队列里取出消息并进行处理。
     * 2. 典型使用场景
     * 在子线程中进行耗时操作，完成后更新 UI。
     * 实现定时任务或者延迟执行任务
     */
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);    //activity_splash 加载页面时，会有一个加载中的过程动画


        /***
         * 设置权限
         */
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    100);
        }


        //Handler.postDelayed 是 Android 中用于在指定延迟时间后执行任务的方法，属于主线程（UI 线程）的消息处理机制。
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                //在主线程执行
                startMainActviity();
            }
        }, 2000);
    }
    private boolean isStartMain = false;

    private void startMainActviity() {
        if(!isStartMain){
            isStartMain = true;
            //Intent 是一个核心组件，用于在不同组件（如 Activity、Service、BroadcastReceiver）之间传递消息和启动组件
            //SplashActivity 当前activity  MainActivity 目的activity
            Intent intent = new Intent(SplashActivity.this,MainActivity.class);
            startActivity(intent);
            //关闭启动页面
            finish();
        }

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        startMainActviity();
        return super.onTouchEvent(event);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        handler.removeCallbacksAndMessages(null);
    }
}
